package CommandPattern; /** * 定义Chef基类 */ public abstract class Chef { //在此定义厨师的公共属性 /** * 定义烹饪方法 */ public abstract void cook(); //在此定义其它有用的方法 }
我们还需要实现具体的厨师,术业有专攻: 做面的厨师:
1 2 3 4 5 6 7 8 9 10 11 12
package CommandPattern; /** * 定义专业做面的厨师 */ public class NoodlesChef extends Chef{ @Override public void cook() { System.out.println("做好了一碗美味的拉面"); } }
做饼的厨师:
1 2 3 4 5 6 7 8 9 10 11 12
package CommandPattern; /** * 定义专业做饼的厨师 */ public class PieChef extends Chef{ @Override public void cook() { System.out.println("做好了一块香喷喷的大饼"); } }
有了小兵,有了将军,我们还需要一套完整的命令:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
package CommandPattern; /** * 实现具体NoodlesCommand */ public class NoodlesCommand implements Command{ private NoodlesChef chef;//专业做面的厨师 public NoodlesCommand(){ chef = new NoodlesChef(); } @Override public void execute() { chef.cook(); //调用其它需要的方法 } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
package CommandPattern; /** * 实现具体PieCommand */ public class PieCommand implements Command{ private PieChef chef;//专业做饼的厨师 public PieCommand(){ chef = new PieChef(); } @Override public void execute() { chef.cook(); //调用其它需要的方法 } }